FLEXSCHEバージョン18
FLEXSCHEバージョン18.0を2018年10月15日にリリースしました。およそ221項目にもおよぶ機能拡張が施されています。そのうちの主だったものをご紹介します。(バージョン17.0とバージョン18.0の差分)
一括検索機能
FLEXSCHE全体から様々な条件で一括検索できるようになりました。
さまざまな検索条件
一括検索ダイアログを使って、FLEXSCHE全体に対して以下のような条件で検索することができます。
- 部分文字列の一致
- 正規表現
- オブジェクトに対する条件式
- 列挙されたオブジェクト

検索先一覧
検索結果は検索パネルに一覧表示されます。
一括検索ダイアログ内で検索範囲を選択して限定することもできます。あるいは、一括検索ダイアログを起動する箇所(プロジェクトパネルや時系列チャートメニューなど)によって検索範囲を暗黙に限定することもできます。 逆に、特定のオブジェクト(プロジェクトパネル内のオブジェクトなど)から起動することで、それが表示されている箇所をすばやく見つけることもできます。
検索履歴が保持されるので、同等条件での再検索もすばやく実行できます。
検索結果からジャンプ
検索パネルの項目をダブルクリックすると、それぞれの検索先のウィンドウ上での位置が強調表示されて、対象を容易に見つけることができます。
アドインからも利用可能
一括検索のフレームワークはサードパーティーのアドインからも利用できます。自作のアドインやビュー、パネルの表示内容を検索対象に加え、検索パネルで当該項目がダブルクリックされたときのアクションを実装することができます。
代替ジョブ機能
1つの作業の代わりに一連の作業を展開し割り付ける「代替ジョブ」機能を利用できるようになりました。
※上級オプション「代替ジョブ」(2ユニット)が必要です。

上の図では、工程P2に、代替ジョブを展開するための工程グラフ(PA→PB→PC)が指定されています。自動スケジューリングによって、作業P2の下に「代替ジョブ」として一連の作業(P2:PA→P2:PB→P2:PC)が展開され、P2の代わりに割り付けられます。
例えば、基幹システムとスケジューリングとで管理する工程の細かさが異なる場合に、基幹システム側の工程定義を変更せずにFLEXSCHE側だけで詳細な工程定義を追加できます。基幹システム側の工程定義に変更があった場合にも、FLEXSCHE側ではその箇所だけに詳細な工程定義を使いすればよく、全体が無駄になることはありません。
また、個別受注生産で詳細工程が確定しないうちに製造に着手しなければならない場合にも、代替ジョブを使えば、基本的な工程定義と詳細な工程定義とに分離しておき、詳細な工程が確定したところから順に置き換えていく、という運用をスムーズに実現できます。
多段階に展開
代替ジョブを展開するための工程グラフの中に、さらに代替ジョブ展開の指定のある工程が含まれている場合、代替ジョブは多階層に展開されます。

例えば、大日程→中日程→小日程というように工程が階層的に管理されている場合に、上階層での工程定義および計画内容を下階層で継承しつつ独自に詳細化していく、ということを、多段階にスムーズに行うことができます。
また、プロジェクト管理でのWBS(Work Breakdown Structure)とも親和性が高くなっています。
複数の生産方法からの自動選択
代替ジョブのための工程グラフ候補を複数指定すると、それらは排他的な選択肢となります。この場合、自動スケジューリングによって、それらの候補の中から1つが自動的に選択されて割り付けられます。その際の選択基準は、計算式できめ細かく指定しておくことができます。

上の図では、工程P2に対して、PA→PB→PCという3工程からなる選択肢と、PA・PB→PC→PDという4工程からなる選択肢があります。自動スケジューリングによって、それらの選択肢のうちで最も望ましいとされたものが自動的に採用されます。
これにより、たとえば内作と外注など、工程数の異なる複数の生産手段がある場合にも、望ましい方を自動的に採用する計画を立案できます。
FLEXSCHE CarryOut
aaa
ユーザーインターフェース
[チャート全体] チャートの書式文字列編集画面を直接開く

資源ガント左部やガントチャートのタスクなど、文字列を編集したい箇所のポップアップメニューから直接的に書式編集画面を呼び出せるようになりました。
[チャート全体] 複数カラムのラベルダブルクリックで設定を表示
複数カラムの列名部分をダブルクリックすると、チャート全体のカラム設定画面を開けるようになりました。
[チャート全体] 行構成ルールの設定タグの指定を計算式で
各行に埋め込む設定タグの指定を計算式で表すことができるようになりました。コスチュームなどと組み合わせて柔軟性なチャート表現が可能となります。
[チャート全体] チャート行の保有変数を計算式から参照可能に
TimeChartRow.VariableValue関数により、保有変数を参照できるようになりました。上位行で集計された値などを保持させておき、それを下位行で参照するというような利用方法が考えられます。下位行で都度集計するよりも処理コストパフォーマンスが改善できます。
[チャート全体] 在庫量チャートのレンジを数値仕様で
レンジを品目数値仕様で指定できるようになりました。
[資源ガントチャート] 分離されたタスク文字列背景色

タスク文字列をバーから分離しているとき、その背景色を設定できるようになりました。
[資源ガントチャート] 分離されたタスク文字列でタスクを選択
文字列部分をクリックしてもタスククリック同様、その作業を選択するようになりました。
[資源ガントチャート] 日時コメントの表示

タスク文字列をバーから分離しているとき、日時をキーとした任意コメントを表示できるようになりました。
[サインボード] データキューブの表示機能強化

データキューブの内容を表示する際、条件に応じた文字色を指定できるようになりました。データキューブの値をそのまま出力するだけでなく、計算式を経由し任意に変換できるようになりました。また、計算式による表示においても、文字色を指定できるようになりました。
[差立てチャート] 行ヘッダの表示強化

日の区切りで表示しているとき、同一日の行ヘッダをマージしました。また、曜日を表示するようにしました。
[計算式] 条件内容部分のコピー&ペースト対応

作業主導ディスパッチングの資源選択などの条件内容部分のコピー&ペーストに対応しました。
[計算式] 標準で複数行編集

標準の計算式欄に高さを設け、複数行編集可能になりました。また、可変サイズ(後述)になったので計算式欄をさらに大きく使うこともできます。
[計算式] タブの挿入に対応
可読性のためのインデント操作ができるようになりました。複数行選択してまとめてTabやSpaceのインデントを挿入したり、Shift+Tabでインデントを減らすことができます。
[その他] 全画面表示
全画面モードを追加し、ビューのみを画面いっぱいに表示できるようになりました。
[その他] プロパティページを可変サイズに

従来サイズ固定だった一部のダイアログが可変サイズ画面になりました。リストやエディットボックスなどのサイズが画面サイズと連動するので、サイズを大きくすれば多くの情報を表示できます。
[その他] スケジューリングパネル拡張
スケジューリングパネル上からルール名/メソッド概要説明の編集、ルール/メソッドのコピー&ペーストが行えるようになりました。また構造化記述内のメソッドも表示されるので、途中のダイアログを省いてメソッド編集ダイアログを直接開けるようになりました。
データ&モデリング
aaa
作業場計画オプション
aaa
FLEXSCHE Communicator
aaa
FLEXSCHE EDIF
SAP HANAに対応
新たにSAP HANAとの連携が可能になりました。HANAはERPやMRPなどにも採用され始めた新しいRDBMSです。FLEXSCHEもHANAに対応したことで、HANAを採用した基幹システムとも直接的に連携が可能となりました。
JSON形式に対応
新たにJSON形式によるファイルI/Oにも対応しました。jsonファイルはスクリプトなどからアクセスする際に便利なので、EDIFによって得られたデータを1クッション処理を挟む場合などに有用です。
EDIFインポートで直前レコードを参照可能に
1件前にインポートしたレコードを参照できるようになりました。例えば、整列されたデータを順に詠み込んで特定の列の値を変化を検出したときに振る舞いを変えるといった制御が容易になるでしょう。
EDIFインポート時のロールバック指定を細かく

従来は全体の共通設定としてエラー時にロールバック「する/しない」といった指定のみでしたが、インポートグループごとに指定できるようになりました。
計算式
乱数の関数の拡張
Math.Random関数を拡張して乱数の発生方式を指定できるようにしました。求める速度や品質に応じて選択することができます。また、正規分布やポアソン分布の乱数を発生する関数も追加されています。
シミュレーションなどの用途での使用が考えられます。
関数型の変数の定義
変数にラムダ式のように関数型の値を代入できるようになりました。これまでのように計算式ライブラリを使用しなくても共通のルーチンを計算式内にまとめて定義することができ、可読性や保守性が上げることができます。
例1:分割元オーダー数量を取得して比較
$getOrderQty := Operation()[.Order.SplitBase.Qty],
.PrecedingOperation.$getOrderQty() < .$getOrderQty()
また再帰的な関数や相互参照の関数も計算式ライブラリを使わずに記述することができます。
例2:フィボナッチ数
$fib := (Long n)[$n <= 1 ? $n : $fib($n - 2) + $fib($n - 1)]->Long,
$fib(10)
レコード生成関数
レコードを生成する関数を追加しました。任意の作業、オーダー、自由カレンダー、作業実績、作業連結レコードを生成することができます。例えば在庫に応じてそれを消費するオーダーを生成したり、一つのオーダーを生成して複数のオーダーをまとめたりすることができます。

動的に変数の値を取得
計算式にリテラルでなく変数の値を取得するVariable関数を追加しました。取得する変数名を状況応じてに変えたい場合や帳票からEDIFのパラメタを動的に参照する場合に利用できます。
様々な関数を追加
プログラミング関連(開発者向け)
FLEXSCHEはパッケージソフトとしての充実した機能を備えているだけではなく、プログラミングによる機能追加が簡単にできることも大きな特長です。
FLEXSCHE Scripting forms(FSF)のボタンコントロールの挙動の拡張
FLEXSCHE Scripting formsは、スクリプト言語(JavaScript/VBScript)だけでモーダルフォームおよぼモードレスフォーム(ビュー/パネル)を手軽に作成するための枠組みです。 バージョン18.0では以下の機能拡張が施されました。
モーダルフォーム(Yes/NoまたはYes/No/Cancel)でEnterキーを押したときに、押されたとみなされるボタン(デフォルトボタン)を指定できるようになりました。
Sub SampleForm_Initialize( form ) ... form.Property( "form", "default_button")="no" ... End Sub
モーダルフォームでのEnterキーやEscapeキーを無効化できるようになりました。
Sub SampleForm_Initialize( form ) ... form.Property( "form", "accept_enter")=false form.Property( "form", "accept_escape")=false ... End Sub
モーダルフォームにおいて、任意のイベント処理内で特定のボタン(OK/Cance/Yes/No)が押されたとみなしてフォームを閉じられるようになりました。
Function SampleForm_Event( form, ctrl, evnt, param )
...
if ctrl = "list1" then
if evnt = "double_clicked" then
form.Done "ok"
end if
end if
...
End Function
その他
簡略表記の日付の読み取り
従来は"2018/11/23"のように、年が4桁の日付しか解釈できませんでしたが、"18/11/23"のように2桁でも受け付けるようになりました。


